<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>libspotify: sp_playlist_callbacks Struct Reference</title>

<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css" />



</head>
<body>
<div id="top"><!-- do not remove this div! -->


<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  
  
  <td style="padding-left: 0.5em;">
   <div id="projectname">libspotify
   
   </div>
   
  </td>
  
  
  
 </tr>
 </tbody>
</table>
</div>

<!-- Generated by Doxygen 1.8.0 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li><a href="examples.html"><span>Examples</span></a></li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
      <li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
    </ul>
  </div>
</div>
<div class="header">
  <div class="summary">
<a href="#pub-attribs">Data Fields</a>  </div>
  <div class="headertitle">
<div class="title">sp_playlist_callbacks Struct Reference<div class="ingroups"><a class="el" href="group__playlist.html">Playlist subsystem</a></div></div>  </div>
</div><!--header-->
<div class="contents">

<p><code>#include &lt;api.h&gt;</code></p>
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="pub-attribs"></a>
Data Fields</h2></td></tr>
<tr class="memitem:a16c3e5758f8f73f5900de4b88424f85e"><td class="memItemLeft" align="right" valign="top">void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structsp__playlist__callbacks.html#a16c3e5758f8f73f5900de4b88424f85e">tracks_added</a> )(<a class="el" href="group__types.html#ga1bcf54cbc117a20ab2c15e59eb3a8174">sp_playlist</a> *pl, <a class="el" href="group__types.html#ga47bbd2262f0c8b5d7147af7d62198e48">sp_track</a> *const *tracks, int num_tracks, int position, void *userdata)</td></tr>
<tr class="memitem:a8f7decf111d725363c968ae4e7b15795"><td class="memItemLeft" align="right" valign="top">void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structsp__playlist__callbacks.html#a8f7decf111d725363c968ae4e7b15795">tracks_removed</a> )(<a class="el" href="group__types.html#ga1bcf54cbc117a20ab2c15e59eb3a8174">sp_playlist</a> *pl, const int *tracks, int num_tracks, void *userdata)</td></tr>
<tr class="memitem:ac3d51200f7a813cce810561132dba4e9"><td class="memItemLeft" align="right" valign="top">void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structsp__playlist__callbacks.html#ac3d51200f7a813cce810561132dba4e9">tracks_moved</a> )(<a class="el" href="group__types.html#ga1bcf54cbc117a20ab2c15e59eb3a8174">sp_playlist</a> *pl, const int *tracks, int num_tracks, int new_position, void *userdata)</td></tr>
<tr class="memitem:a25e98e4355cf2d3503c7ac708c8104cf"><td class="memItemLeft" align="right" valign="top">void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structsp__playlist__callbacks.html#a25e98e4355cf2d3503c7ac708c8104cf">playlist_renamed</a> )(<a class="el" href="group__types.html#ga1bcf54cbc117a20ab2c15e59eb3a8174">sp_playlist</a> *pl, void *userdata)</td></tr>
<tr class="memitem:a7ff55580625a755b196336a551d210d4"><td class="memItemLeft" align="right" valign="top">void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structsp__playlist__callbacks.html#a7ff55580625a755b196336a551d210d4">playlist_state_changed</a> )(<a class="el" href="group__types.html#ga1bcf54cbc117a20ab2c15e59eb3a8174">sp_playlist</a> *pl, void *userdata)</td></tr>
<tr class="memitem:ab07f7eb6c283523afb37d683932b62d4"><td class="memItemLeft" align="right" valign="top">void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structsp__playlist__callbacks.html#ab07f7eb6c283523afb37d683932b62d4">playlist_update_in_progress</a> )(<a class="el" href="group__types.html#ga1bcf54cbc117a20ab2c15e59eb3a8174">sp_playlist</a> *pl, bool done, void *userdata)</td></tr>
<tr class="memitem:a0de3ae5463973647c114d5fdc85ade87"><td class="memItemLeft" align="right" valign="top">void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structsp__playlist__callbacks.html#a0de3ae5463973647c114d5fdc85ade87">playlist_metadata_updated</a> )(<a class="el" href="group__types.html#ga1bcf54cbc117a20ab2c15e59eb3a8174">sp_playlist</a> *pl, void *userdata)</td></tr>
<tr class="memitem:a152a3b599f22f4040ff0581c6927d12e"><td class="memItemLeft" align="right" valign="top">void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structsp__playlist__callbacks.html#a152a3b599f22f4040ff0581c6927d12e">track_created_changed</a> )(<a class="el" href="group__types.html#ga1bcf54cbc117a20ab2c15e59eb3a8174">sp_playlist</a> *pl, int position, <a class="el" href="group__types.html#gaed2dbaa1eebd6752f76613daad9158bc">sp_user</a> *user, int when, void *userdata)</td></tr>
<tr class="memitem:ab78eaf42523f53bb5931eaff8dcdea8b"><td class="memItemLeft" align="right" valign="top">void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structsp__playlist__callbacks.html#ab78eaf42523f53bb5931eaff8dcdea8b">track_seen_changed</a> )(<a class="el" href="group__types.html#ga1bcf54cbc117a20ab2c15e59eb3a8174">sp_playlist</a> *pl, int position, bool seen, void *userdata)</td></tr>
<tr class="memitem:a07d1ebf29e1ba1f8b10c7a8c5e209f41"><td class="memItemLeft" align="right" valign="top">void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structsp__playlist__callbacks.html#a07d1ebf29e1ba1f8b10c7a8c5e209f41">description_changed</a> )(<a class="el" href="group__types.html#ga1bcf54cbc117a20ab2c15e59eb3a8174">sp_playlist</a> *pl, const char *desc, void *userdata)</td></tr>
<tr class="memitem:a910203945dcd26b02b390d5413e4f5dd"><td class="memItemLeft" align="right" valign="top">void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structsp__playlist__callbacks.html#a910203945dcd26b02b390d5413e4f5dd">image_changed</a> )(<a class="el" href="group__types.html#ga1bcf54cbc117a20ab2c15e59eb3a8174">sp_playlist</a> *pl, const byte *image, void *userdata)</td></tr>
<tr class="memitem:ad26fb637a16ed0590bdf7936dfcad82d"><td class="memItemLeft" align="right" valign="top">void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structsp__playlist__callbacks.html#ad26fb637a16ed0590bdf7936dfcad82d">track_message_changed</a> )(<a class="el" href="group__types.html#ga1bcf54cbc117a20ab2c15e59eb3a8174">sp_playlist</a> *pl, int position, const char *message, void *userdata)</td></tr>
<tr class="memitem:ae33cb7f8ebc9eac186c9f22272d093c3"><td class="memItemLeft" align="right" valign="top">void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structsp__playlist__callbacks.html#ae33cb7f8ebc9eac186c9f22272d093c3">subscribers_changed</a> )(<a class="el" href="group__types.html#ga1bcf54cbc117a20ab2c15e59eb3a8174">sp_playlist</a> *pl, void *userdata)</td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Playlist callbacks</p>
<p>Used to get notifications when playlists are updated. If some callbacks should not be of interest, set them to NULL. </p>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="browse_8c-example.html#_a0">browse.c</a>, and <a class="el" href="jukebox_8c-example.html#_a9">jukebox.c</a>.</dd>
</dl></div><hr/><h2>Field Documentation</h2>
<a class="anchor" id="a07d1ebf29e1ba1f8b10c7a8c5e209f41"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void( * <a class="el" href="structsp__playlist__callbacks.html#a07d1ebf29e1ba1f8b10c7a8c5e209f41">sp_playlist_callbacks::description_changed</a>)(<a class="el" href="group__types.html#ga1bcf54cbc117a20ab2c15e59eb3a8174">sp_playlist</a> *pl, const char *desc, void *userdata)</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Called when playlist description has changed</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">pl</td><td>Playlist object </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">desc</td><td>New description </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">userdata</td><td>Userdata passed to <a class="el" href="group__playlist.html#gac90e08b7cf247c51a577ac3b763b6a6f">sp_playlist_add_callbacks()</a> </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a910203945dcd26b02b390d5413e4f5dd"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void( * <a class="el" href="structsp__playlist__callbacks.html#a910203945dcd26b02b390d5413e4f5dd">sp_playlist_callbacks::image_changed</a>)(<a class="el" href="group__types.html#ga1bcf54cbc117a20ab2c15e59eb3a8174">sp_playlist</a> *pl, const byte *image, void *userdata)</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Called when playlist image has changed</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">pl</td><td>Playlist object </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">image</td><td>New image </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">userdata</td><td>Userdata passed to <a class="el" href="group__playlist.html#gac90e08b7cf247c51a577ac3b763b6a6f">sp_playlist_add_callbacks()</a> </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a0de3ae5463973647c114d5fdc85ade87"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void( * <a class="el" href="structsp__playlist__callbacks.html#a0de3ae5463973647c114d5fdc85ade87">sp_playlist_callbacks::playlist_metadata_updated</a>)(<a class="el" href="group__types.html#ga1bcf54cbc117a20ab2c15e59eb3a8174">sp_playlist</a> *pl, void *userdata)</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Called when metadata for one or more tracks in a playlist has been updated.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">pl</td><td>Playlist object </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">userdata</td><td>Userdata passed to <a class="el" href="group__playlist.html#gac90e08b7cf247c51a577ac3b763b6a6f">sp_playlist_add_callbacks()</a> </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a25e98e4355cf2d3503c7ac708c8104cf"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void( * <a class="el" href="structsp__playlist__callbacks.html#a25e98e4355cf2d3503c7ac708c8104cf">sp_playlist_callbacks::playlist_renamed</a>)(<a class="el" href="group__types.html#ga1bcf54cbc117a20ab2c15e59eb3a8174">sp_playlist</a> *pl, void *userdata)</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Called when a playlist has been renamed. <a class="el" href="group__playlist.html#ga61b7e33cc1aedb4e31a2af75ae0ac8cc">sp_playlist_name()</a> can be used to find out the new name</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">pl</td><td>Playlist object </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">userdata</td><td>Userdata passed to <a class="el" href="group__playlist.html#gac90e08b7cf247c51a577ac3b763b6a6f">sp_playlist_add_callbacks()</a> </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a7ff55580625a755b196336a551d210d4"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void( * <a class="el" href="structsp__playlist__callbacks.html#a7ff55580625a755b196336a551d210d4">sp_playlist_callbacks::playlist_state_changed</a>)(<a class="el" href="group__types.html#ga1bcf54cbc117a20ab2c15e59eb3a8174">sp_playlist</a> *pl, void *userdata)</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Called when state changed for a playlist.</p>
<p>There are three states that trigger this callback:</p>
<ul>
<li>Collaboration for this playlist has been turned on or off</li>
<li>The playlist started having pending changes, or all pending changes have now been committed</li>
<li>The playlist started loading, or finished loading</li>
</ul>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">pl</td><td>Playlist object </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">userdata</td><td>Userdata passed to <a class="el" href="group__playlist.html#gac90e08b7cf247c51a577ac3b763b6a6f">sp_playlist_add_callbacks()</a> </td></tr>
  </table>
  </dd>
</dl>
<dl class="section see"><dt>See also:</dt><dd><a class="el" href="group__playlist.html#ga8ad160f654f02f13690568070dd57353">sp_playlist_is_collaborative</a> </dd>
<dd>
<a class="el" href="group__playlist.html#gaf0e39b5969259d10625eb398af0f3f43">sp_playlist_has_pending_changes</a> </dd>
<dd>
<a class="el" href="group__playlist.html#gaee8ea6c07dfdca3397e27b278fa4870a">sp_playlist_is_loaded</a> </dd></dl>

</div>
</div>
<a class="anchor" id="ab07f7eb6c283523afb37d683932b62d4"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void( * <a class="el" href="structsp__playlist__callbacks.html#ab07f7eb6c283523afb37d683932b62d4">sp_playlist_callbacks::playlist_update_in_progress</a>)(<a class="el" href="group__types.html#ga1bcf54cbc117a20ab2c15e59eb3a8174">sp_playlist</a> *pl, bool done, void *userdata)</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Called when a playlist is updating or is done updating</p>
<p>This is called before and after a series of changes are applied to the playlist. It allows e.g. the user interface to defer updating until the entire operation is complete.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">pl</td><td>Playlist object </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">done</td><td>True iff the update is completed </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">userdata</td><td>Userdata passed to <a class="el" href="group__playlist.html#gac90e08b7cf247c51a577ac3b763b6a6f">sp_playlist_add_callbacks()</a> </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ae33cb7f8ebc9eac186c9f22272d093c3"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void( * <a class="el" href="structsp__playlist__callbacks.html#ae33cb7f8ebc9eac186c9f22272d093c3">sp_playlist_callbacks::subscribers_changed</a>)(<a class="el" href="group__types.html#ga1bcf54cbc117a20ab2c15e59eb3a8174">sp_playlist</a> *pl, void *userdata)</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Called when playlist subscribers changes (count or list of names)</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">pl</td><td>Playlist object </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">userdata</td><td>Userdata passed to <a class="el" href="group__playlist.html#gac90e08b7cf247c51a577ac3b763b6a6f">sp_playlist_add_callbacks()</a> </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a152a3b599f22f4040ff0581c6927d12e"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void( * <a class="el" href="structsp__playlist__callbacks.html#a152a3b599f22f4040ff0581c6927d12e">sp_playlist_callbacks::track_created_changed</a>)(<a class="el" href="group__types.html#ga1bcf54cbc117a20ab2c15e59eb3a8174">sp_playlist</a> *pl, int position, <a class="el" href="group__types.html#gaed2dbaa1eebd6752f76613daad9158bc">sp_user</a> *user, int when, void *userdata)</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Called when create time and/or creator for a playlist entry changes</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">pl</td><td>Playlist object </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">position</td><td>Position in playlist </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">user</td><td>User object </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">time</td><td>When entry was created, seconds since the unix epoch. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">userdata</td><td>Userdata passed to <a class="el" href="group__playlist.html#gac90e08b7cf247c51a577ac3b763b6a6f">sp_playlist_add_callbacks()</a> </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ad26fb637a16ed0590bdf7936dfcad82d"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void( * <a class="el" href="structsp__playlist__callbacks.html#ad26fb637a16ed0590bdf7936dfcad82d">sp_playlist_callbacks::track_message_changed</a>)(<a class="el" href="group__types.html#ga1bcf54cbc117a20ab2c15e59eb3a8174">sp_playlist</a> *pl, int position, const char *message, void *userdata)</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Called when message attribute for a playlist entry changes.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">pl</td><td>Playlist object </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">position</td><td>Position in playlist </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">message</td><td>UTF-8 encoded message </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">userdata</td><td>Userdata passed to <a class="el" href="group__playlist.html#gac90e08b7cf247c51a577ac3b763b6a6f">sp_playlist_add_callbacks()</a> </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ab78eaf42523f53bb5931eaff8dcdea8b"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void( * <a class="el" href="structsp__playlist__callbacks.html#ab78eaf42523f53bb5931eaff8dcdea8b">sp_playlist_callbacks::track_seen_changed</a>)(<a class="el" href="group__types.html#ga1bcf54cbc117a20ab2c15e59eb3a8174">sp_playlist</a> *pl, int position, bool seen, void *userdata)</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Called when seen attribute for a playlist entry changes.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">pl</td><td>Playlist object </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">position</td><td>Position in playlist </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">seen</td><td>Set if entry it marked as seen </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">userdata</td><td>Userdata passed to <a class="el" href="group__playlist.html#gac90e08b7cf247c51a577ac3b763b6a6f">sp_playlist_add_callbacks()</a> </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a16c3e5758f8f73f5900de4b88424f85e"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void( * <a class="el" href="structsp__playlist__callbacks.html#a16c3e5758f8f73f5900de4b88424f85e">sp_playlist_callbacks::tracks_added</a>)(<a class="el" href="group__types.html#ga1bcf54cbc117a20ab2c15e59eb3a8174">sp_playlist</a> *pl, <a class="el" href="group__types.html#ga47bbd2262f0c8b5d7147af7d62198e48">sp_track</a> *const *tracks, int num_tracks, int position, void *userdata)</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Called when one or more tracks have been added to a playlist</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">pl</td><td>Playlist object </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">tracks</td><td>Array of pointers to track objects </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">num_tracks</td><td>Number of entries in <code>tracks</code> </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">position</td><td>Position in the playlist for the first track. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">userdata</td><td>Userdata passed to <a class="el" href="group__playlist.html#gac90e08b7cf247c51a577ac3b763b6a6f">sp_playlist_add_callbacks()</a> </td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="jukebox_8c-example.html#a10">jukebox.c</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="ac3d51200f7a813cce810561132dba4e9"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void( * <a class="el" href="structsp__playlist__callbacks.html#ac3d51200f7a813cce810561132dba4e9">sp_playlist_callbacks::tracks_moved</a>)(<a class="el" href="group__types.html#ga1bcf54cbc117a20ab2c15e59eb3a8174">sp_playlist</a> *pl, const int *tracks, int num_tracks, int new_position, void *userdata)</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Called when one or more tracks have been moved within a playlist</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">pl</td><td>Playlist object </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">tracks</td><td>Array of positions representing the tracks that were moved </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">num_tracks</td><td>Number of entries in <code>tracks</code> </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">position</td><td>New position in the playlist for the first track. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">userdata</td><td>Userdata passed to <a class="el" href="group__playlist.html#gac90e08b7cf247c51a577ac3b763b6a6f">sp_playlist_add_callbacks()</a> </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a8f7decf111d725363c968ae4e7b15795"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void( * <a class="el" href="structsp__playlist__callbacks.html#a8f7decf111d725363c968ae4e7b15795">sp_playlist_callbacks::tracks_removed</a>)(<a class="el" href="group__types.html#ga1bcf54cbc117a20ab2c15e59eb3a8174">sp_playlist</a> *pl, const int *tracks, int num_tracks, void *userdata)</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Called when one or more tracks have been removed from a playlist</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">pl</td><td>Playlist object </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">tracks</td><td>Array of positions representing the tracks that were removed </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">num_tracks</td><td>Number of entries in <code>tracks</code> </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">userdata</td><td>Userdata passed to <a class="el" href="group__playlist.html#gac90e08b7cf247c51a577ac3b763b6a6f">sp_playlist_add_callbacks()</a> </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<hr/>The documentation for this struct was generated from the following file:<ul>
<li><a class="el" href="api_8h.html">api.h</a></li>
</ul>
</div><!-- contents -->
<hr size="1"><address style="text-align: right;"><small>
Generated on Wed Mar 28 2012 18:24:10.<br>
Copyright &copy; 2006&ndash;2012 Spotify Ltd</small></address>
</body>
</html>
